package it.univaq.disim.mwt.business.impl;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.List;

import it.univaq.disim.mwt.business.PersonaleSegreteriaService;
import it.univaq.disim.mwt.business.model.Genitore;
import it.univaq.disim.mwt.business.model.PersonaleSegreteria;
import it.univaq.disim.mwt.business.model.TipologiaLaboratorio;
import it.univaq.disim.mwt.business.model.TipologiaSegreteria;

public class JDBCPersonalSegreteriaService implements PersonaleSegreteriaService{

	//FUNZIONA
	@Override
	public PersonaleSegreteria findPersonaleSegreteriaById(Long id) {
		
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		
		String sql = "select * from personale_segreteria where codice_fiscale_id = ? ";
		PersonaleSegreteria personaleSegreteria = null;
		
		try {
		
			connection = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE", "school", "school");
			preparedStatement = connection.prepareStatement(sql);
			preparedStatement.setLong(1, id);
			preparedStatement.executeQuery();	
			resultSet = preparedStatement.getResultSet();		
			resultSet.next();
			

			Long ide=resultSet.getLong("id");
			String codiceFiscale=resultSet.getString("codice_fiscale");
			String nome=resultSet.getString("nome");
			String cognome=resultSet.getString("cognome");
			Date dataDiNascita=resultSet.getDate("data_nascita");
			String sesso=resultSet.getString("sesso");
			String cittaNascita=resultSet.getString("citta_nascita");
			String cittaResidenza=resultSet.getString("citta_residenza");
			String domicilio=resultSet.getString("domicilio");
			String indirizzo=resultSet.getString("indirizzo");
			String provincia=resultSet.getString("provincia");
			String cap=resultSet.getString("cap");
	        String telefono=resultSet.getString("telefono");
			String email=resultSet.getString("email");
			String password=resultSet.getString("password");
			int stipendio = resultSet.getInt("stipendio");
			Long idTipologiaSegreteria = resultSet.getLong("id_tipologia_segreteria");
			String ultimoTitoloDiStudio = resultSet.getString("ultimo_titolo_di_studio");
			
			JDBCTipologiaSegreteriaService tipoSegreteria = new JDBCTipologiaSegreteriaService();
			TipologiaSegreteria tipologiaSegreteria = tipoSegreteria.findSegreteriaById(idTipologiaSegreteria);
			personaleSegreteria = new PersonaleSegreteria(ide, codiceFiscale, nome, cognome, dataDiNascita, sesso, cittaNascita, cittaResidenza, domicilio,
					indirizzo, provincia, cap, telefono, email, password, stipendio, tipologiaSegreteria, ultimoTitoloDiStudio);
			
			
			resultSet.close();
			preparedStatement.close();
			connection.close();
			
			return personaleSegreteria ;

		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		return null;
	}

	//FUNZIONA
	@Override
	public List<PersonaleSegreteria> findAllPersonaleSegreteria() {
		
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		
		List<PersonaleSegreteria> listPersonaleSegreteria= new ArrayList<PersonaleSegreteria>();
		String sql = " select * from personale_segreteria ";
		PersonaleSegreteria personaleSegreteria = null;

		try {

			connection = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE", "school", "school");
			preparedStatement = connection.prepareStatement(sql);
			preparedStatement.executeQuery();	
			resultSet=preparedStatement.getResultSet();
			
			while(resultSet.next()){
			
				Long ide=resultSet.getLong("id");
				String codiceFiscale=resultSet.getString("codice_fiscale");
				String nome=resultSet.getString("nome");
				String cognome=resultSet.getString("cognome");
				Date dataDiNascita=resultSet.getDate("data_nascita");
				String sesso=resultSet.getString("sesso");
				String cittaNascita=resultSet.getString("citta_nascita");
				String cittaResidenza=resultSet.getString("citta_residenza");
				String domicilio=resultSet.getString("domicilio");
				String indirizzo=resultSet.getString("indirizzo");
				String provincia=resultSet.getString("provincia");
				String cap=resultSet.getString("cap");
		        String telefono=resultSet.getString("telefono");
				String email=resultSet.getString("email");
				String password=resultSet.getString("password");
				int stipendio = resultSet.getInt("stipendio");
				Long idTipologiaSegreteria = resultSet.getLong("id_tipologia_segreteria");
				String ultimoTitoloDiStudio = resultSet.getString("ultimo_titolo_di_studio");
				
				JDBCTipologiaSegreteriaService tipoSegreteria = new JDBCTipologiaSegreteriaService();
				TipologiaSegreteria tipologiaSegreteria = tipoSegreteria.findSegreteriaById(idTipologiaSegreteria);
				personaleSegreteria = new PersonaleSegreteria(ide, codiceFiscale, nome, cognome, dataDiNascita, sesso, cittaNascita, cittaResidenza, domicilio,
						indirizzo, provincia, cap, telefono, email, password, stipendio, tipologiaSegreteria, ultimoTitoloDiStudio);
				
				listPersonaleSegreteria.add(personaleSegreteria);
			}

			resultSet.close();
			preparedStatement.close();
			connection.close();
			
			return listPersonaleSegreteria;
		
		} catch (SQLException e) {
		
			e.printStackTrace();
		}
		return null;
	}
	
}